如何远程挂载 Android 文件系统
介绍
如何在多设备间共享数据呢?方案有很多,比如云盘、同步盘、NAS 等等。
手机对个人来说,可以认为是永远在线的设备,手机的存储空间特别大,我想到一个思路,将手机文件系统作为集中式数据存储,通过远程方式进行挂载,实现多设备数据共享。
可行方案
FTP server+curlftpfs
在手机上搭建 FTP Server。
curlftpfs 的功能是:将 ftp host 挂在为本地目录。
但问题是,看到有人再说,底层 libcurl3-gnutls 有 bug,导致 curlftpfs 会很慢。
SSH server + SSHFS
在手机上通过 termux 启动 SSH Server。
通过 SSHFS 进行挂载,会好一些。
同网络问题
手机跟电脑需要在同网络下。这在不同网络环境下,电脑需要知道手机的 ip 地址才能连接。
并且来到不同网络下,还要切换 ip 地址。总之还是比较麻烦的。
zerotier 组网
我想到一种解决方法,使用 zerotier 等方式组成虚拟网络。
这样把不同设备的 ip 固定下来了。
如果在同网络下,则自动转为局域网本地通信,实现速度最大化。
脱 Android 如 GNU/Linux
如果手机脱离 Android 系统,安装 GNU/Linux,那这个问题会简单很多。
比如可靠性问题不再是问题。
比如挂载问题,sshfs 即可。
甚至通过 vnc 走远程桌面都可以。
问题
有线 adb 端口映射
有一种方法,是电脑通过 USB 线连接手机,然后通过 adb 进行端口映射,这样无需 ip 地址,电脑就能 ssh 到手机。
但是这不符合远程挂载的条件了。
但这是一种牺牲体验的方案,如果连一下手机比找 ip、连 ip 还要快,那这也不妨是一种可行方案。
可靠性问题
Android 系统从 Server 角度来看是不可靠的。
如果网络挂载后不可靠(数据传输不稳定、连接不稳定),再加上 Android 系统对文件管理不友好(万一系统脑子抽了给空间优化了,导致文件丢失)。
这么来看,还是不太可靠(白瞎了手机这么好的性能)。
网络资源
command line - How to mount Android external storage over WiFi instead of USB - Ask Ubuntu
Mount an Android phone on Linux/Unix with sshfs | William Denton (miskatonic.org)
wireless - How to access my Android's files using Wi-Fi in Ubuntu? - Ask Ubuntu